{
  Доступные библиотечные элементы в текущей сборке

 TIntgrlCfgrtn - Интерфейс к основным функциям конфигурации

 8 основных модулей
  - журнал
  - исполнительная система
  - решатель
  - управление пользователями и правами
  - консоль
  - библиотека
  - база проекта
  - версионность данных

   версия 0.2 март 2011 prodg@ya.ru D.Kondakov
}
unit WrkspcCfgrtn;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, IniFiles, IIntgrlTypes, IIntgrlObjcts, IIntgrlBaseDefs,
  IIntgrlBaseParms, IIntgrlBaseCnfg, IIntgrlDBPlgn, LogSystm, ExctnSystm,
  SolvingSystm, DataMngrSystm, DataHistSystm, RefrncDtaSystm, UsersMngrSystm,
  CommandConsole, IIntgrlWrkspc;

{$i calcconfig.inc}

type

  { TIntgrlCfgrtn }

  TIntgrlCfgrtn = class(TInlWorkspace)
    constructor Create;
    destructor Destroy; override;
    // Перечень доступных функций системы
    {$ifdef iiMultiUser}
    function iiLoginUser(uName: TinlNameType; uPasswd: TinlStringType): TinlLogicType;
    {$endif}
    procedure iiOpenProject(aPrj: TextLongNameType);
    function iiExeCommand(const cmdLine: TinlStringType; const cmdWait: TinlLogicType = true): TinlStringType;
  private

    FSessions: TFPList;

    FCntxName: TinlNameType;
    {$ifdef iiMultiUser}
    FCurUserID: TinlID;
    {$endif}

  protected
    function getHead: TinlStringType; override;
    function getEnd: TinlStringType; override;
    procedure GetDefParams; virtual;
    procedure ReadParamsFromCmdLine; override;
    procedure ReadParamsFromEnvrnmnt; override;
    procedure ReadParamsFromCfgFile(aCfgFile: TIniFile); override;
    procedure WriteParamsToCfgFile(aCfgFile: TIniFile); override;
  public
    property ContextName: TinlNameType read FCntxName;

    // Функции доступа к параметрам конфигурации
    function GetParamOwner(const pName: TinlNameType): TinlNameType;
    function GetParamTitle(const pName: TinlNameType): TinlStringType;
    function GetParamValue(const pName: TinlNameType): TinlStringType;
    procedure SetParamValue(const pName: TinlNameType; const pValue: TinlStringType);
    // Функции работы с сессиями
    function StartNewSession(theActor: TIntgrlActor): TIntgrlSession;

  end;

const
  ENVmodVer = 1000001;

var
  IIntegralConfig: TIntgrlCfgrtn;

implementation

const
  prmLoadLast: TcfgParmtrInfo = (
    prmName: 'LOAD_LAST';
    prmValue: pLogic;
    prmCaption: 'Открывать последний проект';
    prmComment: 'Открывать при старте последний рабочий проект.';
    DefValue: sNo;
    ChkValue: false;
  );

{ TIntgrlCfgrtn }

constructor TIntgrlCfgrtn.Create;
begin
  inherited;

  FSessions := TFPList.Create;

  FCntxName := GetStringParam('CONTEXT_NAME', cfgDfltCntxt);
end;

destructor TIntgrlCfgrtn.Destroy;
begin
  FreeAndNil(FSessions);
  inherited;
end;

function TIntgrlCfgrtn.iiLoginUser(uName: TinlNameType; uPasswd: TinlStringType
  ): TinlLogicType;
begin

end;

procedure TIntgrlCfgrtn.iiOpenProject(aPrj: TextLongNameType);
begin
  // Прекратить обмен данными всех сессий
  // if pDB. SendSignal('');
end;

function TIntgrlCfgrtn.iiExeCommand(const cmdLine: TinlStringType;
  const cmdWait: TinlLogicType): TinlStringType;
begin
  result := modCONS.ExeCommand(cmdLine);
end;

function TIntgrlCfgrtn.getHead: TinlStringType;
begin
  Result := prgStart+b+prgHeader+b+pstVer+b+v2s(IIntgrlVer)+b+'(alpha)'
              +b+prgCopyright+','+b+prgData;
end;

function TIntgrlCfgrtn.getEnd: TinlStringType;
begin
  if numErrors>0 then Result := pstErrors+pstDelim+i2s(numErrors);
  if numWarnings>0 then begin
    if Result<>'' then Result := Result+b;
    Result := pstWarnings+pstDelim+i2s(numWarnings);
  end;
  if Result<>'' then Result := Result+b+prgFooter
  else Result := prgFooter;
end;

procedure TIntgrlCfgrtn.GetDefParams;
begin
  inherited;
  CfgParams.Add(prmLoadLast.prmName+eq+prmLoadLast.DefValue);

end;

procedure TIntgrlCfgrtn.ReadParamsFromCmdLine;
begin
  inherited;
end;

procedure TIntgrlCfgrtn.ReadParamsFromEnvrnmnt;
begin
  inherited;
end;

procedure TIntgrlCfgrtn.ReadParamsFromCfgFile(aCfgFile: TIniFile);
begin
  inherited ReadParamsFromCfgFile(aCfgFile);
end;

procedure TIntgrlCfgrtn.WriteParamsToCfgFile(aCfgFile: TIniFile);
begin
  inherited WriteParamsToCfgFile(aCfgFile);
end;

function TIntgrlCfgrtn.GetParamOwner(const pName: TinlNameType): TinlNameType;
begin
  result := '';
end;

function TIntgrlCfgrtn.GetParamTitle(const pName: TinlNameType
  ): TinlStringType;
begin
  result := '';
end;

function TIntgrlCfgrtn.GetParamValue(const pName: TinlNameType
  ): TinlStringType;
begin
  result := '';
end;

procedure TIntgrlCfgrtn.SetParamValue(const pName: TinlNameType;
  const pValue: TinlStringType);
begin

end;

function TIntgrlCfgrtn.StartNewSession(theActor: TIntgrlActor): TIntgrlSession;
begin
  Result := TIntgrlSession.Create(GetNewID, theActor);
  FSessions.Add(Result);
end;

end.

